package com.tepth.remote.control.delegate.attendance;

import com.tepth.remote.control.base.mvp.BaseModel;
import com.tepth.remote.control.base.mvp.BasePresenter;
import com.tepth.remote.control.base.mvp.BaseView;
import com.tepth.remote.core.net.callback.IError;
import com.tepth.remote.core.net.callback.ISoapSuccess;

import java.util.WeakHashMap;

/**
 * Description:
 *
 * @author Hequn.Lee
 * @date 2018/11/21
 */
public interface AttendanceContract {
    interface View extends BaseView {
        /**
         * 获取围栏坐标点集合成功
         *
         * @param list        数量
         * @param fencesType  围栏进出类型
         * @param fencesCount 围栏进出次数
         */
        void getFencesLatLngListSuccess(WeakHashMap<String, Object> list, int fencesType, int fencesCount);

        /**
         * 获取围栏坐标点集合失败
         *
         * @param code 错误码
         * @param msg  错误信息
         */
        void getFencesLatLngListFailed(int code, String msg);
    }

    interface Model extends BaseModel {
        /**
         * 获取围栏坐标点集合
         *
         * @param params     参数集合
         * @param methodName 方法名
         * @param nameSpace  命名空间
         * @param success    成功回调
         * @param error      错误回调
         */
        void getFencesLatLngList(WeakHashMap<String, Object> params,
                                 String methodName,
                                 String nameSpace,
                                 ISoapSuccess success,
                                 IError error);
    }

    abstract class AbstractPresenter extends BasePresenter {

        /**
         * 获取围栏坐标点集合
         *
         * @param fencesId    围栏ID
         * @param type        围栏画图类型
         * @param fencesType  围栏进出类型
         * @param fencesCount 围栏进出次数
         */
        abstract void getSubordinateNumber(String fencesId, int type, int fencesType, int fencesCount);
    }
}
